import axios from 'axios'
import router from '../router'
import Vue from 'vue'

// 定义消息类型
export const MsgType = {
    MSG_TYPE_TEXT: 0, // 文字消息
    MSG_TYPE_PIC: 1,    // 图片消息
    MSG_TYPE_SOUND: 2,  // 音频消息
    MSG_TYPE_VIDEO: 3,  // 视频消息
    MSG_TYPE_FILE: 4    // 文件消息
}

// 事件总线
const busEvent = new Vue()

export const bus = busEvent;

export const baseUrl = "http://127.0.0.1:8000"

axios.defaults.baseURL = baseUrl

// 请求拦截器
axios.interceptors.request.use(config=>{
    const token = localStorage.getItem('token')
    const refreshToken = localStorage.getItem('refreshToken')
    if(config.headers == null){
        config.headers = {}
    }
    if( token != null){
        config.headers['token'] = token
    }
    if( refreshToken != null){
        config.headers['refreshToken'] = refreshToken
    }
    return config
})

// 回复拦截器
axios.interceptors.response.use(resp=>{
    if(resp.data.code === 200){
        if(resp.headers.token){
            localStorage.setItem('token', resp.headers.token)
        }
        if(resp.headers.refreshtoken){
            localStorage.setItem('refreshToken', resp.headers.refreshtoken)
        }
        return resp;
    }
    switch(resp.data.code){
        case 401: // 未登录
        case 406: // 验证身份失败
        case 407: // token失效
            localStorage.removeItem('token')
            localStorage.removeItem('refreshToken')
            router.push({name: 'Login'})
            break
    }
    return resp
})
